package com.intelligent.mapper;

import com.intelligent.pojo.ProductionWarehousing;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.Date;

/**
* @author lenovo
* @description 针对表【production_warehousing(生产入库表)】的数据库操作Mapper
* @createDate 2025-09-08 10:02:48
* @Entity com.intelligent.pojo.ProductionWarehousing
*/
public interface ProductionWarehousingMapper extends BaseMapper<ProductionWarehousing> {

    /**
     * 分页查询生产入库记录（包含关联信息）
     * 
     * @param page 分页参数
     * @param warehousingNo 入库单号
     * @param warehousingStatus 入库状态
     * @param workOrderNo 工单编号
     * @param warehouseId 仓库ID
     * @param uId 入库人ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 分页结果
     */
    IPage<ProductionWarehousing> selectProductionWarehousingPage(
            Page<ProductionWarehousing> page,
            @Param("warehousingNo") String warehousingNo,
            @Param("warehousingStatus") Integer warehousingStatus,
            @Param("workOrderNo") String workOrderNo,
            @Param("warehouseId") Long warehouseId,
            @Param("uId") Integer uId,
            @Param("startTime") Date startTime,
            @Param("endTime") Date endTime
    );

    /**
     * 根据ID查询生产入库记录详情（包含关联信息）
     * 
     * @param id 入库记录ID
     * @return 入库记录详情
     */
    ProductionWarehousing selectProductionWarehousingById(@Param("id") Long id);

    /**
     * 新增生产入库记录
     * 
     * @param productionWarehousing 生产入库记录信息
     * @return 影响行数
     */
    int insertProductionWarehousing(ProductionWarehousing productionWarehousing);

    /**
     * 根据日期查询当天最大的入库单号（用于生成新的入库单号）
     * 
     * @param dateStr 日期字符串（yyyyMMdd格式）
     * @return 最大入库单号
     */
    String selectMaxWarehousingNoByDate(@Param("dateStr") String dateStr);

    /**
     * 修改生产入库记录
     * 
     * @param productionWarehousing 生产入库记录信息
     * @return 影响行数
     */
    int updateProductionWarehousing(ProductionWarehousing productionWarehousing);

    /**
     * 删除生产入库记录
     * 
     * @param id 入库记录ID
     * @return 影响行数
     */
    int deleteProductionWarehousing(@Param("id") Long id);
}




